{"cells":[{"cell_type":"code","source":"# 导入模块\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.preprocessing import MinMaxScaler\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom keras.models import Sequential\nfrom keras.layers import Dense\nfrom keras.layers import LSTM\nimport pandas as pd\nfrom keras.models import Sequential, load_model\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.preprocessing import MinMaxScaler","metadata":{"trusted":true},"execution_count":3,"outputs":[]},{"cell_type":"code","source":"# 读取数据\ndataframe = pd.read_csv('./datalab/62612/中国疫情.csv')\ndataframe = dataframe.drop(columns=['Date'])\n\ndataframe = dataframe.drop(columns=['New'])\n# 查看前10条数据\n#dataframe[10:30]","metadata":{"trusted":true},"execution_count":80,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dataset = dataframe.values\nplt.plot(dataset)\nplt.show","metadata":{"trusted":true},"execution_count":81,"outputs":[{"execution_count":81,"output_type":"execute_result","data":{"text/plain":"<function matplotlib.pyplot.show(*args, **kw)>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"cell_type":"code","source":"dataset = dataset.astype('float32')\n#归一化\nscaler = MinMaxScaler(feature_range=(0, 1))\ndataset = scaler.fit_transform(dataset)\n","metadata":{"trusted":true},"execution_count":82,"outputs":[]},{"cell_type":"code","source":"#分割训练集与测试集\ntrain_size = int(len(dataset)*0.80)\ntest_size = len(dataset)-train_size\n\n#print(test_size)\n\ntrain,test = dataset[0:train_size,:],dataset[train_size:,:]\n","metadata":{"trusted":true},"execution_count":83,"outputs":[]},{"cell_type":"code","source":"#时间滑窗\n\ndef create_dataset(dataset,look_back):\n    dataX,dataY = [],[]\n    for i in range(len(dataset)-look_back-1):\n        a = dataset[i:(i+look_back),0]\n        dataX.append(a)\n        dataY.append(dataset[i+look_back,0])\n    return np.array(dataX),np.array(dataY)\n\n\n\ndef create_predict(dataset,look_back):\n    dataX = []\n    for i in range(len(dataset)-look_back):\n        a = dataset[i+1:,0]\n        dataX.append(a)\n    return np.array(dataX)\nlook_back = 1\n\ntrainX,trainY = create_dataset(dataset,look_back)\ntestX,testY = create_dataset(test,look_back)\n","metadata":{"trusted":true},"execution_count":84,"outputs":[]},{"cell_type":"code","source":"#需要转换数据，因为keras需要特征的数据格式\ntrainX = np.reshape(trainX,(trainX.shape[0],1,trainX.shape[1]))\n\ntestX = np.reshape(testX,(testX.shape[0],1,testX.shape[1]))\n","metadata":{"trusted":true},"execution_count":85,"outputs":[]},{"cell_type":"code","source":"#trainX = np.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))\n# create and fit the LSTM network\nmodel = Sequential()\nmodel.add(LSTM(4, input_shape=(None,look_back)))\nmodel.add(Dense(1))\nmodel.compile(loss='mean_squared_error', optimizer='adam')\nmodel.fit(trainX, trainY, epochs=100, batch_size=8, verbose=False)\n#model.save(\"LSTM.h5\")","metadata":{"trusted":true},"execution_count":76,"outputs":[{"execution_count":76,"output_type":"execute_result","data":{"text/plain":"<keras.callbacks.History at 0x7f334104dbe0>"},"metadata":{}}]},{"cell_type":"code","source":"#预测\ntrainPredict = model.predict(trainX)\ntestPredict  = model.predict(testX)\n\n\n#预测结果转换为原有的格式\ntrainPredict = scaler.inverse_transform(trainPredict)\ntestPredict  = scaler.inverse_transform(testPredict)\n\n#print(trainPredict)\n#testY = scaler.inverse_transform([testY]) \n\n#trainPredict = model.predict(trainX)\n#print(trainX)\n\n#反归一化\n#trainPredict = scaler.inverse_transform(trainPredict)\n#print(trainPredict)\n#trainY = scaler.inverse_transform([trainY])\npredict_series = []\nfor i in range(30):\n    p = dataset[-(look_back + 1):]\n    p1 = create_predict(p, look_back)\n    p2 = np.reshape(p1, (p1.shape[0], 1, p1.shape[1]))\n    predict = model.predict(p2)\n    dataset = np.vstack((dataset,predict))\n    predict = scaler.inverse_transform(predict)\n    predict=predict.flatten()\n    predict = predict.tolist()   \n    predict_series.append(predict)\n    \n    #print(predict_series)\nprint(predict_series)\n    \n","metadata":{"trusted":true},"execution_count":86,"outputs":[{"name":"stdout","text":"[[90663.0078125], [98617.8046875], [107989.0703125], [118922.84375], [131482.71875], [144479.96875], [156343.75], [166640.203125], [175132.609375], [181264.6875], [185551.703125], [188482.734375], [190456.734375], [191699.65625], [192323.421875], [192634.4375], [192788.96875], [192865.671875], [192903.671875], [192922.5], [192931.84375], [192936.484375], [192938.765625], [192939.90625], [192940.484375], [192940.75], [192940.890625], [192940.953125], [192941.0], [192941.0]]\n","output_type":"stream"}]},{"cell_type":"code","source":"dataframe = pd.read_csv('./datalab/62612/中国疫情.csv')\nfuture=np.arange(dataframe['Date'].shape[0]+1,dataframe['Date'].shape[0]+31,1)","metadata":{"trusted":true},"execution_count":87,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12, 8))\n#plt.plot(predict_series)\n#plt.plot(trainPredict)\nplt.plot(trainPredict)\nplt.plot(future,predict_series)\n#plt.title('训练集上的结果')\nplt.xlabel('天数')\nplt.ylabel('感染人群数目')\ndataframe = pd.read_csv('./datalab/62612/中国疫情.csv')\ndataframe = dataframe.drop(columns=['Date'])\ndataframe = dataframe.drop(columns=['New'])\ndataset = dataframe.values\nplt.plot(dataset)\n\nplt.legend(['trainPredict','Predict','data'], loc='best')\nplt.show\n#plt.plot(dataset)\n#plt.show\n","metadata":{"trusted":true},"execution_count":88,"outputs":[{"execution_count":88,"output_type":"execute_result","data":{"text/plain":"<function matplotlib.pyplot.show(*args, **kw)>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 864x576 with 1 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAuIAAAHhCAYAAAArn9sMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XmcXFWd///Xqare0kk6nYWEJIQESMISNklQMGqIgoPC6CAijoyyCKOjwldnRsTlO9ERRUe//r7DjMyXGRxHRHGfUWZEEIiIsoUlEAhbIPu+dJLeu6rO749b3XTI1km6+3Z3vZ5aj3vr3FtVn+pE887J554bYoxIkiRJ6l+ZtAuQJEmSypFBXJIkSUqBQVySJElKgUFckiRJSoFBXJIkSUqBQVySJElKgUFckiRJSoFBXJIkSUqBQVySJElKgUFckiRJSkEu7QL6y9ixY+PUqVPTLkOSJElD2GOPPbY5xjiuJ+f2WRAPIfwHMBPYCPw5cDtwBPAU8EGgCvhpb43FGOO+6pk6dSqLFi3q1e8oSZIkdRdCWNHTc/ukNSWEMBfIxRjfAIwELgdWxxhPBuqBs4FLenlMkiRJGjT6qkd8A/B/u33GAuDu0vN7gbOA+b08JkmSJA0afRLEY4wvxhgfCSH8GVAEngC2lw7vAEYDY3p5TJIkSRo0+rJH/E+Bq4HzgX8B6kqH6oDNwPBeHttTDVcBVwFMmTJlt+MdHR2sXr2a1tbWg/mKOkjV1dVMnjyZioqKtEuRJElKTZ8E8RDCBOBvgT+JMTaFEO4BzgF+RtJW8i1gSi+P7SbGeDNwM8Ds2bN3u5hz9erVjBgxgqlTpxJC6JXvrn2LMbJlyxZWr17NtGnT0i5HkiQpNX3VI/4h4HDgNyGEB4AKYFII4SlgK3APcFsvjx2w1tZWxowZYwjvRyEExowZ479CSJKkstcnM+Ixxq8BX3vN8P97zfM24LxeHDsohvD+589ckiTJO2um7sknn+TJJ5884NetX7+er3zlK/s859JLL+Wkk07ijDPO4LzzzqOxsfGgapw3b17X/q9//Wt+/etf7/c13/3udw/qsyRJksqFQTxlBxvEJ0yYwGc/+9n9nvftb3+bBx98kNe//vXcdtttB1PiLs4991zOPffc/Z5nEJckSdq3srnF/f588VfP8OzaHb36nsdPHMnfnX/CXo9fe+21/OIXvwCS4Lpw4ULmzZvHGWecwRNPPMGdd97JunXruOiii8jn88yfP5/rr78egOXLl7NgwYKuwHvppZdy9NFH8z//8z+EELj33nt3+ayGhgaOPPJIli9fzuc+9zlqamooFot85zvf4YUXXuCqq66isbGRq6++mg9+8IP85je/4dOf/jQzZ86kpaWl6326fx4kM+QLFiygvb2dL3zhC5xwwglcccUVPP3008ydO5errrqKD37wg730E5UkSRo6DOIp+trXvsZxxx0HvBpsH374Ya6++mq++tWvArBq1Squv/56Tj31VM4888yuIL4nDQ0NPPjgg1x22WU8/vjjAHziE59g+PDhzJo1i/e///2sWbOGX/3qV9x111284Q1vAODTn/40CxYs4Mwzz+TUU0/lL/7iL7j22mu56667aGlp4W1ve9seP69YLPKpT32Khx9+GIAvfvGLXHDBBTzwwAPMmzePhQsX9saPSZIkaUgyiJfsa+a6P51wwglccMEFXc+rqqq4/vrrqa2t3W+P92WXXQbAkUceSXt7OwA33ngjc+fO3eW8c845pyuEAzz//PP83d/9HSEECoUCDQ0NNDc3M378eADGjRu3x8/bvHkzY8eOZeTIkQBdf3mQJEnS/tkjnrKamhqampqAZI3t4cOH73L8G9/4Bp/+9Ke5+eab97vayGtf29PzZs6c2dUa85GPfITKykqqqqrYvHkzq1atYtOmTXt8n7Fjx7J582Z27NhBU1MTp5xyStexQqHQ9Z0kSZK0O2fEU3b22Wdz4YUX8v3vf5+vf/3rux0///zzufLKK5k0aRK1tbWsXbuWiRMn9moNN9xwA1dccQU7duzgLW95C7W1tVx//fW89a1vZerUqdTX1+/xdZlMhm984xtdrSs33HBD17GLL76YM844g+nTp/O9732vV+uVJEkaCkK5zFjOnj07Llq0aJexpUuXdvVoq3/5s5ckSUNRCOGxGOPsnpxra4okSZKUAltTJEmShqoYId8K7c3JtvujWIBiHgodyTYWk0ex8Op+LAIxeZ+ubbf3TnZ6Vkd/q6mHGef0/+ceAIO4JEnSYBQjNKyAra/AtldK2+XQuAFaGqBlG7Q2QKE97UrTcfjJBnFJkiT1kp3rYdl98PJ9ybZp46vHslVQfySMmACHHQvVo6BmFFTXQeVw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\n"},"metadata":{}}]},{"cell_type":"code","source":"# 读取新型冠状病毒数据进行测试\ndataframe = pd.read_csv('./datalab/62626/美国疫情.csv')\ndataframe = dataframe.drop(columns=['Date'])\ndataframe = dataframe.drop(columns=['New'])\ndataset = dataframe.values\ndataset = dataset.astype('float32')\n#归一化\nscaler = MinMaxScaler(feature_range=(0, 1))\ndataset = scaler.fit_transform(dataset)\ntestdata,TEXTY  = create_dataset(dataset,3)\n","metadata":{},"execution_count":215,"outputs":[]},{"cell_type":"code","source":"\ntestdata = np.reshape(testdata,(testdata.shape[0],1,testdata.shape[1]))\n","metadata":{},"execution_count":216,"outputs":[]},{"cell_type":"code","source":"# 画图\nplt.figure(figsize=(10, 8))\nplt.plot(trainY[1:])\nplt.plot(trainPredict)\nplt.xlabel('天数')\nplt.ylabel('感染人群数目')\nplt.title('分析疫情的结果')\nplt.legend(['train', 'trainPredict'], loc='best')\nplt.show()\nprint(trainY[1:].size)\nprint(trainPredict.size)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# make one forecast with an LSTM,\ndef forecast_lstm(model, X, n_batch):\n\t# reshape input pattern to [samples, timesteps, features]\n\tX = X.reshape(1, 1, len(X))\n\t# make forecast\n\tforecast = model.predict(X, batch_size=n_batch)\n\t# convert to array\n\treturn [x for x in forecast[0, :]]","metadata":{},"execution_count":233,"outputs":[]},{"cell_type":"code","source":"# evaluate the persistence model\ndef make_forecasts(model, n_batch, train, test, n_lag, n_seq):\n\tforecasts = list()\n\tfor i in range(len(test)):\n\t\tX, y = test[i, 0:n_lag], test[i, n_lag:]\n\t\t# make forecast\n\t\tforecast = forecast_lstm(model, X, n_batch)\n\t\t# store the forecast\n\t\tforecasts.append(forecast)\n\treturn forecasts","metadata":{},"execution_count":234,"outputs":[]},{"cell_type":"code","source":"# make forecasts\nforecasts = make_forecasts(model, 1, dataset, test, 10, 10)\nforecasts = scaler.inverse_transform(forecasts)\nprint(forecasts)\n#print(trainPredict)\nprint(testPredict)","metadata":{},"execution_count":235,"outputs":[{"name":"stdout","text":"[[ 32285.62203255]\n [ 30990.06159615]\n [ 28674.41941124]\n [ 26177.14853907]\n [ 27106.88972651]\n [ 28528.75303655]]\n[[ 32285.62109375]\n [ 30990.0625    ]\n [ 28674.41992188]\n [ 26177.1484375 ]]\n","output_type":"stream"}]},{"cell_type":"code","source":"plt.figure(figsize=(12, 8))\n#plt.plot(dataset)\nplt.plot(forecasts)\n#plt.plot(trainPredict)\nplt.plot(testPredict)\n#plt.title('训练集上的结果')\nplt.xlabel('天数')\nplt.ylabel('感染人群数目')\ndataframe = pd.read_csv('./datalab/62626/美国test.csv')\ndataframe = dataframe.drop(columns=['Date'])\ndataframe = dataframe.drop(columns=['Confirmed'])\ndataset = dataframe.values\n#plt.plot(dataset)\n\nplt.legend(['forecasts','trainPredict','testPredict','data'], loc='best')\nplt.show\n#plt.plot(dataset)\n#plt.show\n","metadata":{},"execution_count":236,"outputs":[{"execution_count":236,"output_type":"execute_result","data":{"text/plain":"<function matplotlib.pyplot.show(*args, **kw)>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 864x576 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"cell_type":"code","source":"for i in range(len(forecasts)):\n\toff_s = len(dataset) - 10 + i - 1\n\toff_e = off_s + len(forecasts[i]) + 1\n\txaxis = [x for x in range(off_s, off_e)]\n\tyaxis = [dataset[off_s]] + forecasts[i]\n\tplt.plot(xaxis, yaxis, color='red')","metadata":{},"execution_count":214,"outputs":[{"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)","\u001b[0;32m<ipython-input-214-ebeabf272a29>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      4\u001b[0m         \u001b[0mxaxis\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mx\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moff_s\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moff_e\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m         \u001b[0myaxis\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0moff_s\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mforecasts\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m         \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxaxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myaxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'red'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mplot\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m   3356\u001b[0m                       mplDeprecation)\n\u001b[1;32m   3357\u001b[0m     \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3358\u001b[0;31m         \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   3359\u001b[0m     \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   3360\u001b[0m         \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_hold\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwashold\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1853\u001b[0m                         \u001b[0;34m\"the Matplotlib list!)\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlabel_namer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1854\u001b[0m                         RuntimeWarning, stacklevel=2)\n\u001b[0;32m-> 1855\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1856\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1857\u001b[0m         inner.__doc__ = _add_data_doc(inner.__doc__,\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mplot\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1525\u001b[0m         \u001b[0mkwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnormalize_kwargs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_alias_map\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1526\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1527\u001b[0;31m         \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_lines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1528\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1529\u001b[0m             \u001b[0mlines\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_grab_next_args\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m    404\u001b[0m                 \u001b[0mthis\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    405\u001b[0m                 \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 406\u001b[0;31m             \u001b[0;32mfor\u001b[0m \u001b[0mseg\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_plot_args\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mthis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    407\u001b[0m                 \u001b[0;32myield\u001b[0m \u001b[0mseg\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    408\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_plot_args\u001b[0;34m(self, tup, kwargs)\u001b[0m\n\u001b[1;32m    381\u001b[0m             \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mindex_of\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    382\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 383\u001b[0;31m         \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_xy_from_xy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    384\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    385\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcommand\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'plot'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_xy_from_xy\u001b[0;34m(self, x, y)\u001b[0m\n\u001b[1;32m    240\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    241\u001b[0m             raise ValueError(\"x and y must have same first dimension, but \"\n\u001b[0;32m--> 242\u001b[0;31m                              \"have shapes {} and {}\".format(x.shape, y.shape))\n\u001b[0m\u001b[1;32m    243\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    244\u001b[0m             raise ValueError(\"x and y can be no greater than 2-D, but have \"\n","\u001b[0;31mValueError\u001b[0m: x and y must have same first dimension, but have shapes (2,) and (1, 1)"],"ename":"ValueError","evalue":"x and y must have same first dimension, but have shapes (2,) and (1, 1)","output_type":"error"},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"cell_type":"code","source":"# plot the forecasts in the context of the original dataset\ndef plot_forecasts(series, forecasts, n_test):\n\t# plot the entire dataset in blue\n\tplt.plot(series.values)\n\t# plot the forecasts in red\n\tfor i in range(len(forecasts)):\n\t\toff_s = len(series) - n_test + i - 1\n\t\toff_e = off_s + len(forecasts[i]) + 1\n\t\txaxis = [x for x in range(off_s, off_e)]\n\t\tyaxis = [series.values[off_s]] + forecasts[i]\n\t\tpyplot.plot(xaxis, yaxis, color='red')\n\t# show the plot\n\tplt.show()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_forecasts(dataset, forecasts, 12)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":2}